package tedu.study.day02;

//数据类型的展示
public class DataTypeDemo {
    public static void main(String[] args) {
      byte b1 = 5;
      byte b2 = 6;
      byte b3 = (byte)(b1+b2);

      //byte bx = 128; //超出范围
      //short sx = 32768; //超出范围
      //char cx = 65536; //超出范围

       System.out.println(2+2);  //4
       System.out.println(2+'2'); //52,2加上‘2’的码50
       System.out.println('2'+'2');//100,'2'的码50加上‘2’的码50
       System.out.println('2');//2,只有运算时才会转为int

       /*
      //类型间的转换
      int a = 5;
      long b = a;//自动类型转换（隐式类型转换）
      int c = (int)b;//强制类型转换long-int

      long d = 5;//自动类型转换int-long
      double e = 5;//自动类型转换int-double

      long f = 10000000000L;
      int g = (int)f;
      System.out.println(g);//强制转换可能发生溢出
      double h = 25.789;
      int i = (int)h;
      System.out.println(i);//25,强制转换可能丢失精度

        */

       /*
       //5)char:字符型，2个字节
       char c1 = '女';//字符女
       char c2 = 'f';//字符f
       char c3 = '6';//字符6
       char c4 = ' ';//字符空格
       //char c5 = 女;//编译错误，字符型直接量必须放在''中
       //char c6 = '';//编译错误，必须有字符
       //char c7 = '女性';//编译错误，只能有一个字符

       char c8 = 65; //0到65535之间
       System.out.println(c8); //println()时会一句变量的类型来展示
                               //c8为char类型，则i字符的形式展示
                               //若c8为int类型，则以数字的形式来展示

       char c9 = '\\';  //转义
       System.out.println(c9);
       char c10 = '\''; //转义
       System.out.println(c10);

       char d1 = '男';
       char d2 = 'g';
       char d3 = '7';
       char d4 = ' ';
       //char d5 = 男;
       //char d6 = '';
       //char d7 = 'nan';

       char d8 = 48;
       System.out.println(d8);
       char d9 = 97;
       System.out.println(d9);

        */

        /*
        //4)boolean:布尔型，1个字节
        boolean a = true; //true为布尔型直接量
        boolean b = false; //false为布尔型直接量
        //boolean c = 250; //编译错误，布尔型变量只能存储true和false

         */




        /*
        //3)double:浮点型，8个字节，很大很大，比long大
       double a = 25.678;//25.678为小数直接量，默认为double型
       float b = 25.678F;//25.678F为float型直接量

       double c=3.0,d=2.9;
       System.out.println(c-d);//0.1
                               //0.10000000000000009有可能发生舍入误差
                               //上飘
        double c1=6.0,d1=1.1;
        System.out.println(c1-d1); //4.9 不飘

        double c2=3.0,d2=1.9;
        System.out.println(c2-d2); //1.1 不飘

         */




        /*
        //2)long:长整型，8个字节，从-900万万亿到900万万亿
        long a = 25L; //25L，为长整型直接量，可以为l，但因部分文档l和1相似，一般使用L
        //long b = 10000000000;//编译错粗，10000000000默认为int,超出int范围
        long c = 10000000000L;//100亿L为长整型直接量
        //long d = 25.769;//编译错误，长整型变量只能装整数

        //运算时若有可能一处，建议在第1个数字后加L
        long e = 1000000000*2*10L;
        System.out.println(e);//200亿

        long f = 1000000000*3*10L;
        System.out.println(f);//不是300亿

        long g = 1000000000L*3*10;
        System.out.println(g);//300亿

         */



        /*
        //1）int:整型，4个字节，-21个多亿到正的21个多亿
        int a = 250; //250为整数直接量，默认为int类型
        //int b = 10000000000; //编译错误，100亿默认为int类型，超出范围了
        //int c = 25.6787;//编译错误，int型变量只能装整数

        System.out.println(5/2); //2
        System.out.println(2/5); //0
        System.out.println(5/3.0); //2.5
        System.out.println(5.0/2); //2.5

        int d = 2147483647; // int的最大值
        d = d+1;
        System.out.println(d); //-2147483648 ,发生溢出了

        int x=100;
        short x1=(short)x;

        short y=50;
        int y1=y;
         */
    }
}
